/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Server.DAO;

import DTO.LoaiPhong_DTO;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Lenh Ho Xung
 */
public class LoaiPhong_DAO {

    private static String sqlString;
    private static MSSQLConnect cn;
    private static ResultSet rs;
    
     public static DefaultTableModel addTable(ResultSet rs) throws Exception {
        DefaultTableModel table = new DefaultTableModel();
        ResultSetMetaData metaData = rs.getMetaData();
        int totalColumn = metaData.getColumnCount();
        Object[] dataRow = new Object[totalColumn];

        if (rs != null) {
            for (int i = 1; i <= totalColumn; i++) {
                table.addColumn(metaData.getColumnName(i));
            }
            while (rs.next()) {
                for (int i = 1; i <= totalColumn; i++) {
                    dataRow[i - 1] = rs.getObject(i);
                }
                table.addRow(dataRow);
            }

        }
        return table;

    }
     
    //lấy danh sách mà loại phòng
    public static ArrayList<LoaiPhong_DTO> layDanhSachMaLoaiPhong() throws Exception {
        ArrayList<LoaiPhong_DTO> ds = new ArrayList<>();       
        sqlString = "SELECT MALOAIPHONG FROM LOAIPHONG";
        try {
            cn = new MSSQLConnect();
            rs = cn.excuteQuery(sqlString);
            while (rs.next()) {
                LoaiPhong_DTO lp = new LoaiPhong_DTO();
                lp.setMaloaiPhong(rs.getString("MaLoaiPhong"));
                ds.add(lp);
            }
        } catch (Exception e) {
            throw new Exception("Không thể lấy danh sách phòng");

        } finally {
            cn.Close();
        }
        return ds;
        
    }
     public static ArrayList<LoaiPhong_DTO> layDanhSachTenLoaiPhong() throws Exception {
        ArrayList<LoaiPhong_DTO> ds = new ArrayList<>();       
        sqlString = "SELECT TENLOAIPHONG FROM LOAIPHONG";
        try {
            cn = new MSSQLConnect();
            rs = cn.excuteQuery(sqlString);
            while (rs.next()) {
                LoaiPhong_DTO lp = new LoaiPhong_DTO();
                lp.setTenloaiPhong(rs.getString("TenLoaiPhong"));
                ds.add(lp);
            }
        } catch (Exception e) {
            throw new Exception("Không thể lấy danh sách phòng");

        } finally {
            cn.Close();
        }
        return ds;
        
    }
    //lấy tên loại phòng
    public static String layTenLoaiPhong(String maloaiPhong) throws Exception{
        String tenloaiPhong=new String(); 
        sqlString = "SELECT TenLoaiPhong FROM LOAIPHONG WHERE MaLoaiPhong='" + maloaiPhong + "' ";
        try {
            cn = new MSSQLConnect();
            rs = cn.excuteQuery(sqlString);
            while (rs.next()) {            
                tenloaiPhong=rs.getString("TenLoaiPhong");                    
            }
        } catch (Exception e) {
            throw new Exception("Không thể lấy danh sách phòng");

        } finally {
            cn.Close();
        }
        return tenloaiPhong;
    }
    public static DefaultTableModel layDanhSachLoaiPhong() throws Exception {
        DefaultTableModel table = new DefaultTableModel();
        sqlString = "SELECT MaLoaiPhong as [Mã loại phòng], TenLoaiPhong as [Tên loại phòng],DonGia as [Đơn Giá]"
                + "  FROM LOAIPHONG";

        try {
            //thực hiện câu truy vấn
            cn = new MSSQLConnect();
            //thực hiện câu truy vấn
            rs = cn.excuteQuery(sqlString);
            table = addTable(rs);
        } catch (Exception e) {
            throw new Exception("Không thể lấy danh sách phòng");
        } finally {
            cn.Close();
        }
        return table;

    }
    public static int Insert(LoaiPhong_DTO p) throws Exception {
        int n = 0;
        sqlString = "INSERT INTO LOAIPHONG (MaLoaiPhong,TenLoaiPhong, DonGia) VALUES('"
                + p.getMaloaiPhong() + "',N'"
                + p.getTenloaiPhong() + "','"
                + p.getDonGia()+ "')";


        //Kết nối CSDL
        try {
            cn = new MSSQLConnect();
            n = cn.executeUpdate(sqlString);
        } catch (Exception e) {
            System.out.print(e.toString());
            //throw new Exception("Không thể lấy danh sách phòng");
        } finally {
            cn.Close();
        }
        return n;
    }
     //xóa
    public static int Delete(String maloaiPhong) throws Exception {
        int n;
        sqlString = "DELETE FROM LOAIPHONG WHERE MaLoaiPhong='" + maloaiPhong + "'";
        try {
            cn = new MSSQLConnect();
            //Thực thi câu lệnh SQL
            n = cn.executeUpdate(sqlString);

        } catch (Exception e) {
            throw new Exception("Lỗi Kết Nối Cơ sở dữ liệu.");
        } finally {
            cn.Close();
        }
        return n;
    }

    //cập nhật phòng
    public static int Update(LoaiPhong_DTO p) throws Exception {
        int n;
        sqlString = "UPDATE LOAIPHONG SET TenLoaiPhong=N'" + p.getTenloaiPhong()
                + "',DonGia='" + p.getDonGia()
                + "' WHERE MaLoaiPhong='" + p.getMaloaiPhong() + "'";
        try {
            cn = new MSSQLConnect();
            //Thực thi câu lệnh SQL
            n = cn.executeUpdate(sqlString);

        } catch (Exception e) {
            throw new Exception("Lỗi Kết Nối Cơ sở dữ liệu.");
        } finally {
            cn.Close();
        }
        return n;
    }
    
}
